<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 同一个作用域  变量名相同  后边的会把前面的 覆盖掉  
        // 不同的作用域  允许变量重名 

        // 赋值机制 :
        // 自己作用域有这个变量  值直接赋值给这个变量  
        // 自己作用域没有 往父作用域查找  如果有给父作用域改名字的变量赋值 
        // 如果没有 继续向上(父作用域)查找  
        // 一次类推 直到 window  
        // 如果window 也没有这个变量  
        // 那么就把这个变量 当做全局变量 赋值  


        // 只要声明变量  务必加var 关键字

        // 1
        // var n = 100;

        // function fn1(){
        //     var n = 200;
        //     console.log('fn1开始',n);
        //     n = 500;
        //     console.log('fn1结束',n);
        // }
        // console.log('全局开始',n); // 100
        // fn1(); // 200  500
        // console.log('全局结束',n);// 100


        // 2
        // var n = 100;

        // function fn1() {
        //     console.log('fn1开始', n);
        //     n = 500;
        //     console.log('fn1结束', n);
        // }
        // console.log('全局开始', n); // 100
        // fn1(); // 100  500 
        // console.log('全局结束', n);// 500

        // 3

        function fn1() {
            // console.log('fn1开始', n); 报错
            n = 500;
            console.log('fn1结束', n);// 500
        }
        // console.log('全局开始', n); // 报错
        fn1(); // 
        console.log('全局结束', n);// 500

    </script>
</body>

</html>